#ifndef UI_DATA_H
#define UI_DATA_H

#include "stdint.h"
#include "string.h"
#include <QString>

//字体大小
#define WORD_SIZE_MIN           14
#define WORD_SIZE               18   //
#define WARNING_TOP_WORD_SIZE               22   //
#define WARNING_WORD_SIZE               30   //
#define WARNING_WORD_SIZE_26               26   //
#define WARNING_WORD_SIZE_24               24   //
#define WARNING_WORD_SIZE_20               20   //
#define WARNING_WORD_SIZE_28               28   //
#define MOTOR_NUM               6       //电机个数 4磁吸  5抱手  6(半自动 有推杆的抱手车) 3 棉包 叉车

typedef enum
{
    //下发参数
    MECHANICS_PARAMETERS = 0,  //底盘机械参数
    SENSOR_CMD,       //传感器开关操作
    PAW_CONTROL,      //抱手伸缩
    ERR_DESTROY,
    RADAR_AMEND,     //雷达偏置、纠偏
    AGV_ID,          //车辆编号修改 ,车辆产线修改
    AGV_POSITIONING,  //定位操作：开始定位，退出定位
    BATTAYTHOLD,      //电量阈值设置

    //接收参数
    ARM_RUN_INFO = 1000,
    MECH_PARAM,
    ARM_OPERATION_INFO,
    MISSION_INFO,
    DEVICE_STATUS,
    AGV_RUNNING_INFO,

}DATA_INDEX_E;

//底盘信息：
/*******************************************************************************************/
//电机错误码，5个
//陀螺仪角度
//电池电量、电压、电流
//底盘初始化状态
//嵌入式版本号
//急停状态
//遥控状态(server ，手持遥控器状态)
//防撞条状态
//光电开关状态（手抓限位4个，抓筒光电2个，后退防护光电状态2个）
//电机通讯故障
//陀螺仪通讯故障
//IO通讯
//电池通讯

//struct
//{
//    uint32_t cmd_id;
//    uint32_t ack;
//}cmd_ack;

typedef union
{
    uint32_t data;
    struct
    {
        uint32_t emer:2;                   //急停
        uint32_t remote:2;                 //遥控
        uint32_t impact:2;                 //碰撞
        uint32_t swInLimmit:1;             //抱手收回极限位置
        uint32_t swInArrive:1;             //抱手收回限位开关
        uint32_t swOutLimmit:1;            //抱手伸出极限开关
        uint32_t swOutArrive:1;            //抱手伸出限位开关
        uint32_t swTouch:1;                //抱手触发开关状态
        uint32_t swDrop:1;                 //抱手掉筒检测开关状态
        uint32_t swPawSafe1:1;             //指尖防撞接近开关状态1
        uint32_t swPawSafe2:1;             //指尖防撞接近开关状态2
        uint32_t swDoor1:1;                //开门状态传感器1
        uint32_t swDoor2:1;                //开门状态传感器2
        uint32_t :16;
    }bit;
}SByte;                                    //状态

typedef union
{
    uint32_t data;
    struct
    {
        uint32_t motor1:1;                 //电机通讯状态1
        uint32_t motor2:1;                 //电机通讯状态2
        uint32_t motor3:1;                 //电机通讯状态3
        uint32_t motor4:1;                 //电机通讯状态4
        uint32_t motor5:1;                 //抱手电机通讯状态
        uint32_t gyro:1;                   //陀螺仪通讯状态
        uint32_t rtuIo:1;                  //IO模块通讯状态
        uint32_t battey:1;                 //电池通讯状态
        uint32_t :24;
    }bit;
}CByte;

typedef struct
{
    union
    {
        uint16_t read;
        struct
        {
            uint16_t bit0_emergency1:1;
            uint16_t bit1_emergency2:1;
            uint16_t bit2_swOpenLimit:1;
            uint16_t bit3_swCloseLimit:1;
            uint16_t bit4_swOpen:1;
            uint16_t bit5_swClose:1;
            uint16_t bit6_swTouch:1;
            uint16_t bit7_swDrop:1;
            uint16_t bit8_:1;
            uint16_t bit9_:1;
            uint16_t bit10_:1;
            uint16_t bit11_:1;
            uint16_t bit12_impact:1;
            uint16_t bit13_autoChange:1;
            uint16_t bit14_reboot:1;
            uint16_t bit15_:1;
        }ch;
    }in;

    union
    {
        uint16_t write;
        struct
        {
            uint16_t bit0_lampLeftRed:1;
            uint16_t bit1_lampLeftGreen:1;
            uint16_t bit2_lampLeftYello:1;
            uint16_t bit3_lampLeftBuzzer:1;
            uint16_t bit4_lampRightRed:1;
            uint16_t bit5_lampRightGreen:1;
            uint16_t bit6_lampRightYello:1;
            uint16_t bit7_lampRightBuzzer:1;
            uint16_t bit8_:1;
            uint16_t bit9_:1;
            uint16_t bit10_:1;
            uint16_t bit11_:1;
            uint16_t bit12_:1;
            uint16_t bit13_:1;
            uint16_t bit14_:1;
            uint16_t bit15_:1;
        }ch;
    }out;

}RTU317F_s;

//磁吸车IO接口
typedef struct
{
  union
  {
    uint16_t read;
    struct
    {
      uint16_t bit0_emergency1:1;      //急停按钮1
      uint16_t bit1_emergency2:1;      //急停按钮2
      uint16_t bit2_swCXPower:1;       //磁吸运行信号 机器人磁吸打开
      uint16_t bit3_impact:1;          //
      uint16_t bit4_swCkTube:1;        //方桶有无检测信号 drop
      uint16_t bit5_swTubeL:1;         //方桶到位检测left
      uint16_t bit6_swTubeR:1;         //方桶到位检测right
      uint16_t bit7_reboot:1;          //钥匙开关信号
      uint16_t bit8_:1;
      uint16_t bit9_:1;
      uint16_t bit10_:1;
      uint16_t bit11_:1;
      uint16_t bit12_:1;
      uint16_t bit13_:1;
      uint16_t bit14_:1;
      uint16_t bit15_:1;
    }ch;
  }in;
  union
  {
    uint16_t write;
    struct
    {
      uint16_t bit0_lampLeftRed:1;
      uint16_t bit1_lampLeftGreen:1;
      uint16_t bit2_lampLeftYello:1;
      uint16_t bit3_lampLeftBuzzer:1;
      uint16_t bit4_horn1:1;
      uint16_t bit5_horn2:1;
      uint16_t bit6_horn3:1;
      uint16_t bit7_horn4:1;
      uint16_t bit8_swCXOpen:1;          //磁吸控制IO
      uint16_t bit9_:1;
      uint16_t bit10_:1;
      uint16_t bit11_:1;
      uint16_t bit12_:1;
      uint16_t bit13_:1;
      uint16_t bit14_:1;
      uint16_t bit15_:1;
    }ch;
  }out;
}RTU317F_CX_s;

//半自动雷达IO
typedef struct
{
    union
    {
        uint8_t read;
        struct
        {
            uint8_t DI0_radarO1:1;//
            uint8_t DI1_radarO2:1;//
            uint8_t DI2_radarO3:1;//
            uint8_t DI3_radarO4:1;//
            uint8_t DI4_:1;
            uint8_t DI5_:1;//
            uint8_t DI6_:1;
            uint8_t DI7_:1;//
        }ch;
    }in;

    union
    {
        uint8_t write;
        struct
        {
            uint8_t DO0_radarI1:1;
            uint8_t DO1_radarI2:1;
            uint8_t DO2_radarI3:1;
            uint8_t DO3_radarI4:1;
            uint8_t DO4_:1;
            uint8_t DO5_:1;
            uint8_t DO6_:1;
            uint8_t DO7_:1;
        }ch;
    }out;
}RTU317E_s;

typedef struct
{
    union
    {
        uint16_t read;
        struct
        {
            uint16_t bit0_emergentStop1:1;    //急停
            uint16_t bit1_emergentStop2:1;
            uint16_t bit2_emergentStop3:1;
            uint16_t bit3_workerEnter:1;    //工人确认按键
            uint16_t bit4_powerKey:1;        //钥匙开关
            uint16_t bit5_impact:1;            //防撞条
            uint16_t bit6_sgnUpLimit:1;        //抬升上限位
            uint16_t bit7_sgnDownLimit:1;    //抬升下限位
            uint16_t bit8_bucketLF:1;        //左前是否有筒
            uint16_t bit9_bucketLB:1;        //左后是否有筒
            uint16_t bit10_bucketRF:1;        //右前是否有筒
            uint16_t bit11_bucketRB:1;      //右后是否有筒
            uint16_t bit12_sgnPushLimitLF:1;//左前推筒限位
            uint16_t bit13_sgnPushLimitLB:1;//左后推筒限位
            uint16_t bit14_sgnPushLimitRF:1;//右前推筒限位
            uint16_t bit15_sgnPushLimitRB:1;//右后推筒限位
        }ch;
    }in;
    union
    {
        uint16_t write;
        struct
        {
            uint16_t bit0_lampRed:1;        //报警灯
            uint16_t bit1_lampGreen:1;
            uint16_t bit2_lampYello:1;
            uint16_t bit3_lampBuzzer:1;
            uint16_t bit4_horn1:1;          //语音
            uint16_t bit5_horn2:1;
            uint16_t bit6_horn3:1;
            uint16_t bit7_horn4:1;
            uint16_t bit8_UpCtr:1;          //抬升电推杆抬升开关
            uint16_t bit9_DownCtr:1;//      //抬升电推杆下降开关
            uint16_t bit10_hookPushL:1;     //左勾筒推出
            uint16_t bit11_hookPullL:1;     //左勾筒收缩
            uint16_t bit12_hookPushR:1;     //右勾筒推出
            uint16_t bit13_hookPullR:1;     //右勾筒收缩
            uint16_t bit14_pushPowerOn:1;   //电推杆上电开关
            uint16_t bit15_ledPowerOn:1;    //LED上电开关
        }ch;
    }out;
}RTU317F0_s;

typedef struct
{
    union
    {
        uint16_t read;
        struct
        {
            uint16_t bit0_sgnStepLU:1;    //左挡板上限位
            uint16_t bit1_sgnStepLD:1;    //左挡板下限位
            uint16_t bit2_sgnStepRU:1;    //右挡板上限位
            uint16_t bit3_sgnStepRD:1;    //右挡板下限位
            uint16_t bit4_sgnHookLF:1;    //左勾筒上限位
            uint16_t bit5_sgnHookLB:1;    //左勾筒下限位
            uint16_t bit6_sgnHookRF:1;    //右勾筒上限位
            uint16_t bit7_sgnHookRB:1;    //右勾筒下限位
            uint16_t bit8_radarO11:1;    //安全雷达1
            uint16_t bit9_radarO12:1;
            uint16_t bit10_radarO13:1;
            uint16_t bit11_sgnHookSW:1; //电推杆上电信号
            uint16_t bit12_radarO21:1;    //安全雷达2
            uint16_t bit13_radarO22:1;
            uint16_t bit14_radarO23:1;
            uint16_t bit15_sgnLedSW:1;    //LED灯上电信号
        }ch;
    }in;

    union
    {
        uint16_t write;
        struct
        {
            uint16_t bit0_radarI11:1;
            uint16_t bit1_radarI12:1;
            uint16_t bit2_radarI13:1;
            uint16_t bit3_radarI14:1;
            uint16_t bit4_radarI21:1;
            uint16_t bit5_radarI22:1;
            uint16_t bit6_radarI23:1;
            uint16_t bit7_radarI24:1;
            uint16_t bit8_:1;
            uint16_t bit9_:1;//
            uint16_t bit10_:1;
            uint16_t bit11_:1;
            uint16_t bit12_:1;
            uint16_t bit13_:1;
            uint16_t bit14_:1;
            uint16_t bit15_:1;
        }ch;
    }out;
}RTU317F1_s;

typedef struct
{
    union
    {
        uint8_t read;
        struct
        {
            uint8_t bit0_tailSafet1:1;     //叉车尾部光电左
            uint8_t bit1_tailSafet2:1;     //叉车尾部光电右
            uint8_t bit2_goodsDrop1:1;     //棉包滑落检测光电开关1
            uint8_t bit3_goodsDrop2:1;     //棉包滑落检测光电开关2
            uint8_t bit4_goodsTop:1;       //棉包夹上限位
            uint8_t bit5_charging:1;       //电池充电
            uint8_t bit6_saftLamp:1;       //示廓灯
            uint8_t bit7_emergency:1;      //底盘软急停
        }ch;
    }in;

    union
    {
        uint16_t write;
        struct
        {
            uint8_t bit0_lampLeftRed:1;
            uint8_t bit1_lampLeftGreen:1;
            uint8_t bit2_lampLeftYello:1;
            uint8_t bit3_lampRightRed:1;
            uint8_t bit4_lampRightGreen:1;
            uint8_t bit5_lampRightYello:1;
            uint8_t bit6_:1;
            uint8_t bit7_:1;
        }ch;
    }out;
}RTU317E;

typedef struct
{
    union
    {
        uint16_t read;
        struct
        {
            uint16_t bit0_impact:1;             //安全触边防撞条
            uint16_t bit1_goodsTouch1:1;        //货物碰触开光左
            uint16_t bit2_goodsTouch2:1;        //货物碰触开光右
            uint16_t bit3_goodsAway1:1;         //货物离开开关左
            uint16_t bit4_goodsAway2:1;         //货物离开开关右
            uint16_t bit5_downLimmit:1;         //棉包夹下限位
            uint16_t bit6_upLimmit:1;           //棉包夹抬升限位
            uint16_t bit7_swAuto:1;             //手动 自动
            uint16_t bit8_safetLadar1_1:1;      //安全雷达1-1
            uint16_t bit9_safetLadar1_2:1;      //安全雷达1-2
            uint16_t bit10_safetLadar1_3:1;     //安全雷达1-3
            uint16_t bit11_safetLadar1_4:1;     //安全雷达1-4
            uint16_t bit12_safetLadar2_1:1;     //安全雷达2-1
            uint16_t bit13_safetLadar2_2:1;     //安全雷达2-2
            uint16_t bit14_safetLadar2_3:1;     //安全雷达2-3
            uint16_t bit15_safetLadar2_4:1;     //安全雷达2-4
        }ch;
    }in;

    union
    {
        uint16_t write;
        struct
        {
            uint16_t bit0_safetOut1_1:1;
            uint16_t bit1_safetOut1_2:1;
            uint16_t bit2_safetOut1_3:1;
            uint16_t bit3_safetOut1_4:1;
            uint16_t bit4_horn1:1;
            uint16_t bit5_horn2:1;
            uint16_t bit6_safetOut2_1:1;
            uint16_t bit7_safetOut2_2:1;
            uint16_t bit8_safetOut2_3:1;
            uint16_t bit9_safetOut2_4:1;
            uint16_t bit10_horn3:1;
            uint16_t bit11_horn4:1;
            uint16_t bit12_:1;
            uint16_t bit13_:1;
            uint16_t bit14_:1;
            uint16_t bit15_:1;
        }ch;
    }out;
}RTU308K;

//清洁车IO
typedef struct
{
  union
  {
    uint16_t read;
    struct
    {
      uint16_t bit0_emergency1:1;     	//急停1
      uint16_t bit1_emergency2:1;     	//急停2
      uint16_t bit2_autoChange:1;    		//手自动切换
      uint16_t bit3_swMasterFan:1;   		//吸尘风机总开关
      uint16_t bit4_impact:1;         	//防撞条
      uint16_t bit5_sgnFanStatus1:1;  	//吸尘风机1开启状态
      uint16_t bit6_sgnFanStatus2:1;  	//吸尘风机2开启状态
      uint16_t bit7_sgnFanStatus3:1;		//吸尘风机3开启状态
      uint16_t bit8_impact:1;				//防撞条
      uint16_t bit9_impact:1;				//防撞条
      uint16_t bit10_sgnSafeRadar11:1; 	//安全雷达1输出
      uint16_t bit11_sgnSafeRadar12:1;	//安全雷达1输出
      uint16_t bit12_sgnSafeRadar13:1;	//安全雷达1输出
      uint16_t bit13_sgnSafeRadar21:1; 	//安全雷达2输出
      uint16_t bit14_sgnSafeRadar22:1; 	//安全雷达2输出
      uint16_t bit15_sgnSafeRadar23:1;	//安全雷达2输出
    }ch;
  }in;

  union
  {
    uint16_t write;
    struct
    {
      uint16_t bit0_lampLeftRed:1;
      uint16_t bit1_lampLeftGreen:1;
      uint16_t bit2_lampLeftYello:1;
      uint16_t bit3_horn1:1;
      uint16_t bit4_horn2:1;
      uint16_t bit5_horn3:1;
      uint16_t bit6_horn4:1;
      uint16_t bit7_swFan1:1;
      uint16_t bit8_swFan2:1;
      uint16_t bit9_swFan3:1;
      uint16_t bit10_swSafeRadar11:1;
      uint16_t bit11_swSafeRadar12:1;
      uint16_t bit12_swSafeRadar13:1;
      uint16_t bit13_swSafeRadar21:1;
      uint16_t bit14_swSafeRadar22:1;
      uint16_t bit15_swSafeRadar23:1;
    }ch;
  }out;

}RTU317F_Clean;

typedef struct
{
  uint8_t serialNum;
  union
  {
    uint32_t data;
    struct
    {
      uint32_t online:1;
      uint32_t active:1;
      uint32_t zero:1;//回零状态
      uint32_t error:1;
      uint32_t :28;
    }b;
  }state;

  uint32_t min;
  uint32_t max;
  uint32_t orgValue;	//原始数据
  float 	 value;		//实际测量值
  uint32_t count;		//数据接收计数
}EcolineInfo_s;

typedef struct
{
    uint32_t version;                      //程序版本
    uint32_t init;                         //初始化状态
    uint32_t motor_err[5];                 //电机错误码
    SByte status;
    CByte communication;
    uint32_t battey;                       //电池电量
    int batteyCurrent;                     //电池电流
    int batteyVoltage;                     //电池电压
    int batteyThold;                       //低电量阈值
    float gyro_yaw;                        //陀螺仪
}arm_run_info_t;

/*******************************************************************************************/
//手动抱手伸缩
//底盘机械参数（轮子半径、轮距、轴距、减速比、编码器线数）
//陀螺仪矫正
//传感器开关（指尖安全、掉筒检测、抓筒触发、抱手极限位）
//其他异常状态（刹车、路径规划异常...）
typedef struct
{
    int robot_type;                       //机器人类型
    float wheel_length;                   // m
    float axis_length;                    // m
    float wheel_r;                        // m
    float reduction_ratio;                // number
    float encoder_lines;                  // number陀螺仪类型
    int gyro_type;
}MechanicalParameters;


typedef union
{
    uint32_t data;
    struct
    {
        uint32_t pawCtr:3;               //抱手手动控制
        uint32_t gyroAmend:2;            //陀螺仪修正
        uint32_t maskImpact:1;           //防撞条信号屏蔽
        uint32_t maskInLimmit:1;         //抱手收回极限位置信号屏蔽
        uint32_t maskInArrive:1;         //抱手收回限位开关信号屏蔽
        uint32_t maskOutLimmit:1;        //抱手伸出极限开关信号屏蔽
        uint32_t maskOutArrive:1;        //抱手伸出限位开关信号屏蔽
        uint32_t maskTouch:1;            //抱手触发开关状态
        uint32_t maskDrop:1;             //抱手掉筒检测开关状态
        uint32_t maskPawSafe1:1;         //指尖防撞接近开关状态1
        uint32_t maskPawSafe2:1;         //指尖防撞接近开关状态2
        uint32_t maskDoor1:1;            //开门状态传感器1
        uint32_t maskDoor2:1;            //开门状态传感器2
        uint32_t :16;
    }bit;
}CmdCtrByte;

////逻辑异常
typedef union
{
    uint32_t data;
    struct
    {
        uint32_t traffic:2;                    //交通管制
        uint32_t attitude_obstacle:2;           //姿态调整有障碍
        uint32_t qr_code:2;      //0正常，1扫码枪异常，2二维码未识别，3二维码错误
        uint32_t nav_obstacle:3;                //导航路径上有障碍
        uint32_t floyd_fail:2;                  //路径规划失败
        uint32_t local_status:2;                 //0=false,1=success/2
        uint32_t position_radar_error:2;                 //0正常，1定位雷达异常
        uint32_t obstacle_radar_error:2;                 //0正常，1避障雷达异常
        uint32_t scan_radar_error:2;                 //0正常，1识别雷达异常
        uint32_t slip_status:2;                  //0正常，1打滑
        uint32_t serial_status:2;              //0,正常；1，中断   //usb中断
        uint32_t odom_status:2;              //0正常；1，异常   //里程计中断
        uint32_t robot_pause:2;                 //手动刹车 暂停
        uint32_t :5;
    }status;
}agv_error_t;

typedef struct
{
    uint32_t cmd_id;
    uint32_t status_brake;    //1=brake,软件刹车
    agv_error_t agv_error;    //control_status_t
}usb_robot_status_run_t;
////逻辑异常
typedef struct
{
    uint32_t cmd_id;
    union
    {
        uint32_t data;
        struct
        {
            uint32_t network:2;        //网络状态
            uint32_t camera:2;        //相机状态，非零异常
            uint32_t checkRadar:2;    //识别雷达状态，非零异常
            uint32_t scanRadar:2;     //导航雷达状态，非零异常
            uint32_t scanQrCode:2;    //二维码设备，非零异常
            uint32_t :22;
        }b;
    }dev;
    union
    {
        uint32_t data;
        struct
        {
            uint32_t traffic:2;                //交通管制，非零异常
            uint32_t attitude_obstacle:2;      //姿态调整障碍，非零异常
            uint32_t nav_obstacle:3;           //路径障碍，非零异常
            uint32_t floyd_fail:2;             //路径规划，非零异常
            uint32_t local_status:2;           //定位，非零异常
            uint32_t slip_status:2;            //打滑，非零异常
            uint32_t brake:3;                //软件刹车，非零异常
            uint32_t agvIdle:2;              //1.忙碌 2.建图 3.空闲
            uint32_t :14;
        }status;
    }logic;
}pc_robot_status_run_t;

//
/*=================================================================
工控外设
*/
typedef struct
{
  union
  {
    uint8_t data;
    struct
    {
       uint8_t online:1;
       uint8_t active:1;
       uint8_t :6;
    }b;
  }state;
  uint32_t pc_count;
  union
  {
    uint32_t data;
    struct
    {
     uint32_t network:2;
     uint32_t camera:2;
     uint32_t checkRadar:2;
     uint32_t scanRadar:2;
     uint32_t scanQrCode:2;
     uint32_t :22;
    }b;
 }dev;
 union
 {
    uint32_t data;
    struct
    {
     uint32_t traffic:2;             //交通管制
     uint32_t attitude_obstacle:2;   //姿态调整障碍
     uint32_t nav_obstacle:3;        //路径障碍
     uint32_t floyd_fail:2;          //路径规划
     uint32_t local_status:2;        //定位
     uint32_t slip_status:2;         //打滑
     uint32_t brake:3;    //软件刹车
     uint32_t agvIdle:2;             //任务空闲状态，0=空闲，1=忙碌，2=建图
     uint32_t :14;
    }status;
  }logic;
}PC_s;

typedef union
{
    uint32_t data;
    struct
    {
        uint32_t traffic:2;             //交通管制
        uint32_t attitude_obstacle:2;   //障碍检测
        uint32_t qr_code:2;             //二维码检测
        uint32_t nav_obstacle:3;        //旋转障碍物检测
        uint32_t floyd_fail:2;          //弗洛伊德规划失败
        uint32_t netConnect:1;          //网络连接
        uint32_t agv_break:1;           //刹车状态
        uint32_t :19;
    }bit;
}StatusByte;


typedef struct
{
    CmdCtrByte control;
    StatusByte status;
}arm_operation_info_t;
//typedef struct cmd_ack arm_operation_info_res_t;

//工控信息：
//senver_mission_id
//missiong_id
//sub_mission
//任务起点
//任务终点
//任务类型
//作业二维码值
//识别二维码值

//TCP中断
//雷达数据异常
//里程计数据异常
//管制状态
//刹车状态
//姿态调整障碍物状态
//导航障碍物状态
//任务--二维码不匹配-读码器打开失败-相机打开失败
//FLOYD--读取文件失败-地图不匹配-机器人到任务点没有通行点
//导航--路径偏差过大-全局路径经过禁区-路径上有障碍物
//定位-开机定位失败-计算定位失败

//机器人信息--机器人型号-本机IP-MAC地址-机器人编号-机器人产线
//软件版本--机器人版本号-底盘
//
//

//typedef struct
//{
//    uint32_t serverMissionId;                 //任务ID
//    uint32_t missiongId;                      //
//    uint32_t subMission;                      //
//    char taskStartPoint[20];                  //起点
//    char taskStopPoint[20];                   //终点
//    char taskType[20];                        //任务类型
//    char workQrValue[20];                     //任务二维码
//    char callQrValue[20];                     //识别到二维码
//    char subMissionType[20];
//}mission_info_t;

typedef struct
{
    uint32_t serverMissionId;                 //
    uint32_t missionId;                      //任务ID
    uint32_t subMission;                      //步骤
    std::string taskStartPoint;                  //起点
    std::string taskMidPoint;
    std::string taskStopPoint;                   //终点
    QString taskType;                        //任务类型
    QString workQrValue;                     //任务二维码
    QString callQrValue;                     //识别到二维码
    QString subMissionType;
    std::string missionName;
    std::string missionInfo;
}mission_info_t;

//处理显示
typedef struct
{
    uint32_t  cmd_id;
    std::string  	info;
    std::string   solution;
}log_info_t;

typedef union
{
    uint32_t data;
    struct
    {
        uint32_t tcp:4;                       //TCP状态
        uint32_t odme:4;                      //里程计状态
        uint32_t lader1:4;                    //雷达状态1
        uint32_t lader2:4;                    //雷达状态2
        uint32_t lader3:4;                    //雷达状态3
        uint32_t mapPositioning:4;            //定位状态
        uint32_t :8;
    }bit;
}device_status_t;

typedef struct
{
    int agv_id;                               //机器人ID
    QString agv_lines;                       //机器人产线
    std::string property;
    std::string agv_type;
//    char agv_lines[20];                       //机器人产线
    int loc;//0=no local,1=local success      //机器人定位状态
    int status;//0=free,1=busy                //机器人状态
    double radar_offset;                      //雷达偏置
}screen_param_t;

typedef struct
{
    int agv_id;                               //机器人ID
    char agv_lines[20];                       //机器人产线
    int loc;//0=no local,1=local success      //机器人定位状态
    int status;//0=free,1=busy                //机器人状态
    double radar_offset;                      //雷达偏置
}robot_base_param_t;

//底盘机械参数
//抱手伸缩
//陀螺仪矫正
//传感器开关操作

//雷达偏置、纠偏
//车辆编号修改
//车辆产线修改
//退出定位
//充电定位


//==============================================================
//操作嵌入式
//==============================================================
typedef struct
{
    int robot_type;
    float wheel_length;       // m
    float axis_length;        // m
    float wheel_r;            // m
    float reduction_ratio;    // number
    float encoder_lines;      // number
}mech_para_t;//车体的机械参数

typedef union
{
    uint32_t data;
    struct
    {
        uint32_t gyroAmend : 2;//陀螺仪矫正
        uint32_t maskImpact : 1;
        uint32_t maskInLimmit : 1;
        uint32_t maskInArrive : 1;
        uint32_t maskOutLimmit : 1;
        uint32_t maskOutArrive : 1;
        uint32_t maskTouch : 1;
        uint32_t maskDrop : 1;
        uint32_t maskPawSafe1 : 1;
        uint32_t maskPawSafe2 : 1;
        uint32_t maskDoor1 : 1;
        uint32_t maskDoor2 : 1;
        uint32_t : 19;
    }bit;
}sensor_cmd_t;//传感器操作
typedef struct
{
    uint32_t mode;//0=自动伸缩模式，1=点动模式
    uint32_t pawCtr;//抱手伸缩 1=伸出，2=收回，3=停止
}paw_control_t;//抱手伸缩控制
typedef struct
{
    uint32_t err_count_full;
}err_destroy_t;//异常解除

/*=========*嵌入式上传-IO=========*///
//typedef:USB_FROM_ARM_MECH，车体参数//
//typedef:USB_FROM_ARM_RUN_INFO，行车异常状态
typedef union
{
    uint8_t data;
    struct
    {
        uint8_t b0:1;
        uint8_t b1:1;
        uint8_t b2:1;
        uint8_t b3:1;
        uint8_t b4:1;
        uint8_t b5:1;
        uint8_t b6:1;
        uint8_t b7:1;
    }bit;
}Byte1_u;

typedef struct
{
    uint8_t serialNum;
    union
    {
        uint8_t data;
        struct
        {
            uint8_t online:1;
            uint8_t active:1;
            uint8_t control:2;  //0 2手动 1网页
            uint8_t error:4;
        }b;
    }state;
    Byte1_u in1;
    Byte1_u in2;
    Byte1_u in3;
    Byte1_u in4;
    Byte1_u out1;
    Byte1_u out2;
    Byte1_u out3;
    Byte1_u out4;
    Byte1_u mask1;
    Byte1_u mask2;
    Byte1_u mask3;
    Byte1_u mask4;
    uint32_t sysInit;
}IO_s;

typedef union
{
    uint16_t read;
    struct
    {
        uint16_t bit0_clipLeftOpen:1;      //
        uint16_t bit1_clipLeftClose:1;
        uint16_t bit2_clipRightOpen:1;     //预留
        uint16_t bit3_clipRightClose:1;    //预留
        uint16_t bit4_clampCheck1:1;
        uint16_t bit5_clampCheck2:1;
        uint16_t bit6_clampCheck3:1;
        uint16_t bit7_clampCheck4:1;
        uint16_t bit8_checkGoods:1;
        uint16_t bit9_:1;
        uint16_t bit10_:1;
        uint16_t bit11_:1;
        uint16_t bit12_:1;
        uint16_t bit13_:1;
        uint16_t bit14_:1;
        uint16_t bit15_:1;
    }ch;
}RTU307G_1;

typedef union
{
    uint16_t read;
    struct
    {
        uint16_t bit0_radarSafeIn11:1;
        uint16_t bit1_radarSafeIn12:1;
        uint16_t bit2_radarSafeIn13:1;
        uint16_t bit3_radarSafeIn14:1;
        uint16_t bit4_radarSafeIn21:1;
        uint16_t bit5_radarSafeIn22:1;
        uint16_t bit6_radarSafeIn23:1;
        uint16_t bit7_radarSafeIn24:1;
        uint16_t bit8_emergency1:1;
        uint16_t bit9_autoChange:1;
        uint16_t bit10_impact:1;
        uint16_t bit11_clearanceLampSignal:1;
        uint16_t bit12_clipDownLimmit:1;
        uint16_t bit13_clipUpLimmit:1;
        uint16_t bit14_clipUpArrive:1;
        uint16_t bit15_checkDrop:1;
    }ch;
}RTU307G_2;

typedef union
{
    uint32_t write;
    struct
    {
        uint32_t bit0_radarControl11:1;
        uint32_t bit1_radarControl12:1;
        uint32_t bit2_radarControl13:1;
        uint32_t bit3_radarControl14:1;
        uint32_t bit4_radarControl21:1;
        uint32_t bit5_radarControl22:1;
        uint32_t bit6_radarControl23:1;
        uint32_t bit7_radarControl24:1;
        uint32_t bit8_leftLampRed:1;
        uint32_t bit9_leftLampGreen:1;
        uint32_t bit10_leftLampYello:1;
        uint32_t bit11_rightLampRed:1;
        uint32_t bit12_rightLampGreen:1;
        uint32_t bit13_rightLampYello:1;
        uint32_t bit14_clearanceLampControl:1;
        uint32_t bit15_:1;
        uint32_t bit16_horn1:1;
        uint32_t bit17_horn2:1;
        uint32_t bit18_horn3:1;
        uint32_t bit19_horn4:1;
        uint32_t bit20_horn5:1;
        uint32_t bit21_horn6:1;
        uint32_t bit22_horn7:1;
        uint32_t bit23_horn8:1;
        uint32_t bit24_:8;
    }ch;
}RTU317T;

//叉车IO1
typedef struct
{
  union
  {
    uint16_t data;
    struct
    {
      uint16_t bit0_sgnEmergency:1;
      uint16_t bit1_sgnAutoKey:1;
      uint16_t bit2_sgnImpact:1;
      uint16_t bit3_sgnContourLight:1;
      uint16_t bit4_sgnCharging:1;
      uint16_t bit5_sgnForkDownLmt:1;
      uint16_t bit6_sgnForkUpLmt:1;
      uint16_t bit7_sgnForkMiddleLmt:1;
      uint16_t bit8_sgnForkTail:1;
      uint16_t bit9_sgnForkTail:1;
      uint16_t bit10_sgnForkSlip:1;
      uint16_t bit11_sgnForkSlip:1;
      uint16_t bit12_sgnForkGoodsImpact:1;
      uint16_t bit13_sgnForkGoodsImpact:1;
      uint16_t bit14_sgnForkLeave:1;
      uint16_t bit15_sgnForkLeave:1;
    }ch;
  }in;

  union
  {
    uint16_t data;
    struct
    {
      uint16_t bit0_swLampRed:1;
      uint16_t bit1_swLampGreen:1;
      uint16_t bit2_swLampYello:1;
      uint16_t bit3_swLampRed:1;
      uint16_t bit4_swLampGreen:1;
      uint16_t bit5_swLampYello:1;
      uint16_t bit6_swContourLight:1;
      uint16_t bit7_swCharging:1;
      uint16_t bit8_swHorn1:1;
      uint16_t bit9_swHorn2:1;
      uint16_t bit10_swHorn3:1;
      uint16_t bit11_swHorn4:1;
      uint16_t bit12_swSoftEmerge:1;
      //uint16_t bit13_sw:1;
    }ch;
  }out;
}RTU_317F_s;

//叉车IO2
/*=============================================
//
==============================================*/
typedef struct
{
  union
  {
    uint8_t data;
    struct
    {
      uint8_t bit0_sgnSafeRadar1:1;
      uint8_t bit1_sgnSafeRadar1:1;
      uint8_t bit2_sgnSafeRadar1:1;
      uint8_t bit3_sgnSafeRadar1:1;
      uint8_t bit4_sgnSafeRadar2:1;
      uint8_t bit5_sgnSafeRadar2:1;
      uint8_t bit6_sgnSafeRadar2:1;
      uint8_t bit7_sgnSafeRadar2:1;
    }ch;
  }in;

  union
  {
    uint8_t data;
    struct
    {
      uint8_t bit0_swSafeRadar1:1;
      uint8_t bit1_swSafeRadar1:1;
      uint8_t bit2_swSafeRadar1:1;
      uint8_t bit3_swSafeRadar1:1;
      uint8_t bit4_swSafeRadar2:1;
      uint8_t bit5_swSafeRadar2:1;
      uint8_t bit6_swSafeRadar2:1;
      uint8_t bit7_swSafeRadar2:1;
    }ch;
  }out;
}RTU_317E_s;

//typedef:USB_FROM_ARM_OPERATION, 安全雷达
typedef struct
{
    uint8_t serialNum;
    Byte1_u areaSet;//切换区域命令
    Byte1_u areaSign;//区域状态
//    Byte1_u areaNow;//当前区域
}SafeRadar_s;

//typedef:USB_FROM_ARM_MOTOR，电机状态
typedef struct
{
    uint8_t serialNum;//电机标识
    union
    {
        uint8_t data;
        struct
        {
            uint8_t online:1;
            uint8_t voltage:1;
            uint8_t current:1;
            uint8_t temperature:1;
            uint8_t error:1;//异常
            uint8_t active:1;
            uint8_t bit:2;
        }b;
    }state;
    short     current;
    short     voltage;
    short     temperature;
    int     data;//里程、角度、油压等，按照标准单位*1000传送
    uint32_t errorCode;
    uint32_t count;
}Motor_s;

typedef struct
{
  uint16_t read;
  struct
  {
      uint16_t bit0_motor1Status:1;
      uint16_t bit1_motor2Status:1;
      uint16_t bit2_motor3Status:1;
      uint16_t bit3_motor4Status:1;
      uint16_t bit4_motor5Status:1;
      uint16_t bit5_motor6Status:1;
      uint16_t bit6_motor7Status:1;
      uint16_t bit7_motor8Status:1;
      uint16_t bit8_motor9Status:1;
      uint16_t bit9_motor10Status:1;
      uint16_t bit10_motor11Status:1;
      uint16_t bit11_motor12Status:1;
      uint16_t bit12_motor13Status:1;
      uint16_t bit13_motor14Status:1;
      uint16_t bit14_motor15Status:1;
      uint16_t bit15_motor16Status:1;
  }ch;
}IO_MOTOR_t;

//typedef:USB_FROM_ARM_BATTERY， 电池状态
typedef struct
{
    uint8_t serialNum;
    union
    {
        uint8_t data;
        struct
        {
            uint8_t online:1;
            uint8_t powerLow:1;
            uint8_t charging:1;//充电状态
            uint8_t voltage:1;
            uint8_t current:1;
            uint8_t temperature:1;
            uint8_t error:1;//异常
            uint8_t active:1;
        }b;
    }state;
    uint8_t percentage;
    uint8_t powerLowLimmit;
    short voltage;
    short current;
    short temperature;
    int errorCode;
    uint32_t count;
}Battery_s;

//typedef:USB_FROM_ARM_SOFTWARE，软件版本
typedef struct
{
    char v[4];//嵌入式软件版本
}Software_s;

typedef union
{
    uint8_t data;
    struct
    {
        uint8_t bit0_safetyradar:1;               //抱手手动控制
        uint8_t bit1_safetyradar:1;            //陀螺仪修正
        uint8_t bit2_safetyradar:1;           //防撞条信号屏蔽
        uint8_t :1;         //抱手收回极限位置信号屏蔽
        uint8_t :1;         //抱手收回限位开关信号屏蔽
        uint8_t :1;        //抱手伸出极限开关信号屏蔽
        uint8_t :1;        //抱手伸出限位开关信号屏蔽
        uint8_t :1;            //抱手触发开关状态
    }bit;
}safety_radar_t;

//==============================================================
//操作工控
//==============================================================
typedef struct
{
    uint32_t radar_offset;
}radar_amend_t;//雷达纠偏

typedef struct
{
    uint32_t id;
    uint32_t line;
}agv_id_t;//agv 产线和ID修改

typedef struct
{
    uint32_t positioning;//1=退出定位，2=重新定位
    uint32_t pos_number; //采用几号定位点
}agv_positioning_t;//定位操作

//typedef struct
//{
// int battayThold;          //电量报警阈值
//}battay_thold_t;

/****************************************************/
typedef struct
{
    int impact_alarm_status;          //防撞条状态
    int motor1_alarm_status;          //1号电机故障
    int motor2_alarm_status;          //2号电机故障
    int motor3_alarm_status;          //3号电机故障
    int motor4_alarm_status;          //4号电机故障
    int motor5_alarm_status;          //5号电机故障
    int motor6_alarm_status;          //6号电机故障
    int gyro_alarm_status;            //陀螺仪掉线警报
    int slip_status;                  //打滑警报
    int IO_alarm_status;              //IO模块通讯警报
    int serial_status;                //USB连接警报
    int odom_status;                  //里程计错误警报
    int battery_alarm_status;         //电池通讯警报   12
    int obstacle_radar_error;         //避障雷达错误警报 13
    int scan_radar_error;             //识别雷达错误警报 14
    int position_radar_error;         //导航雷达警报 15
    int traffic_alarm_status;         //交通管制警报16
    int nav_obstacle;                 //路径障碍检测警报17
    int attitude_obstacle;            //旋转障碍检测警报18
    int netconnect_alarm_status;      //网络连接警报19
    int floyd_alarm_status;           //弗洛伊德规划警报20
    int local_status;                 //定位异常警报21
    int Qrcode_alarm_status;          //二维码22
    int emergency;                    //急停按钮拍下
    int close_open_limit;             //前后限位同时触发
    int jackupdown;                   //24
    int agv_alarm;
    int camera_alarm;                 //相机报警27
}alarm_staus_t;

//操作传感器
//type：USB_TO_ARM_PAW_CONTROL，手动操作状态下车体各开关控制
typedef struct
{
    Byte1_u lamp;
    Byte1_u horn;
    uint32_t cmd_id;
    union
    {
        uint32_t data;
        struct
        {
            uint32_t :1;
            uint32_t charging:1;//充电开关
            uint32_t motionForword:1;
            uint32_t motionBack:1;
            uint32_t motionUp:1;
            uint32_t motionDown:1;
            uint32_t motionClamp:1;
            uint32_t motionOpen:1;
            uint32_t :2;
            uint32_t safeLamp:3;  //1开启  0关闭
            uint32_t :19;
        }b;
    }sw;
}AgvSW_ts;

//typedef:USB_TO_ARM_ERR_DESTROY，手动屏蔽传感器的错误
typedef struct
{
    uint32_t cmd_id;
    union
    {
        uint32_t data;
        struct
        {
            uint32_t impact:1;//防撞条
//            uint32_t maskInLimmit:1;         //抱手收回极限位置信号屏蔽
//            uint32_t maskInArrive:1;         //抱手收回限位开关信号屏蔽
//            uint32_t maskOutLimmit:1;        //抱手伸出极限开关信号屏蔽
//            uint32_t maskOutArrive:1;        //抱手伸出限位开关信号屏蔽
//            uint32_t maskTouch:1;            //抱手触发开关状态
//            uint32_t maskDrop:1;             //抱手掉筒检测开关状态
//            uint32_t maskPawSafe1:1;         //指尖防撞接近开关状态1
//            uint32_t maskPawSafe2:1;         //指尖防撞接近开关状态2
//            uint32_t maskDoor1:1;            //开门状态传感器1
//            uint32_t maskDoor2:1;            //开门状态传感器2
            uint32_t :31;
        }b;
    }mask;
}ErrMask_s;

typedef struct
{
    uint32_t cmd_id;
    union
    {
        uint32_t data;
        struct
        {
          uint32_t impact:1;//防撞条
          uint32_t radarArea101:4;//前安全雷达区域1
//          uint32_t radarArea102:1;//前安全雷达区域2
//          uint32_t radarArea103:1;//前安全雷达区域3
          uint32_t radarArea201:4;//后安全雷达区域1
//          uint32_t radarArea202:1;//后安全雷达区域2
//          uint32_t radarArea203:1;//后安全雷达区域3
          uint32_t :23;
//          uint32_t index:16;
        }b;
    }mask;
}ErrMask_Cotton_s;

//typedef:USB_TO_ARM_BATTERY_THOLD, 电池阈值，手动电池保护限制
typedef struct
{
    uint32_t cmd_id;
    union
    {
        uint32_t thold;
        struct
        {
            uint32_t lowPercentage:8;//低电量限制
            uint32_t current:8;
            uint32_t voltage:8;
            uint32_t temperature:8;
        }b;
    }limmit;
}BatteryLimmit_s;

//警报显示
typedef struct Alarm_Data
{
    unsigned	int		id;
    QString  	age;
    struct Alarm_Data   *next;
}alarm_data_t;

typedef struct
{
    union
    {
        uint8_t data;
        struct
        {
            uint8_t online:1;
            uint8_t active:1;
            uint8_t :6;
        }b;
    }state;
    uint32_t count;
    float yaw;
}Gyro_s;

//补充：嵌入式上传
//typedef:USB_FROM_ARM_OPERATION = 6304，车体开关状态
typedef struct
{
    uint8_t serialNum;
    union
    {
        uint8_t data;
        struct
        {
            uint8_t active:1;
            uint8_t jackFlag:2;    //顶升状态：0=未知状态，1=零位状态，2=抬起状态，3=传感器检测出问题或有一侧电机未顶起或落下
            uint8_t :5;
        }b;
    }state;
    Byte1_u lamp;
    Byte1_u horn;
    union
    {
        uint32_t data;
        struct
        {
            uint32_t autoDriver:1; //
            uint32_t charging:1;//充电开关
            uint32_t : 1;
            uint32_t : 1;
            uint32_t : 1;
            uint32_t : 1;
            uint32_t : 1;
            uint32_t : 1;
            uint32_t :2;
            uint32_t safeLamp:3;
            uint32_t :19;
        }b;
    }swState;
}AgvSwState_s;

typedef struct
{
    union
    {
        uint8_t info;
        struct
        {
            uint8_t active : 1;  //数据发送激活
            uint8_t cfg : 2;   //配置状态，1=默认，2=agv配置
            uint8_t board : 5; //主控类型， 1=usb, 2=net
        }bit;
    }head;
    uint8_t test;  //是否是测试状态，1= 出厂，2= 电量限制测试，3= 裸车不带抱手
    uint8_t actuator; //抱手类型，1= 1米，2= 600, 3 = 1.2 4=磁吸
    uint8_t wheel;  //轮子设置，1= 半径200，2= 150
    uint8_t carTray; //0= 默认车盘参数，1= 老1代车底盘, 2= 三代车底盘, 3=四代车底盘,4=4代车1.2,
    uint8_t motor;  //驱动器类型，1= 和利时驱动，2= 雷赛驱动
    uint8_t leadScrew; //丝杆导程1= 4mm，2= 5mm
    uint8_t sensorMode; //0= 掉筒检测和抓筒触发功能都启用,1= 只启用掉筒检测，不用抓筒触发,2= 掉筒检测和抓筒触发功能都禁用,3或其他= 只启用抓筒触发，不启用掉筒检测
    uint8_t ergImu;  //1= IMU数据禁止上传，2= 拍急停后上传IMU，注意会影响动态定位
    uint8_t swhorn;  //语音模块，1=禁止,2开始并使用IO模式,3开启并使用CAN模式
    uint8_t swimpact; //防撞条关闭，1=禁止 2开启 （根据实际情况），。。。
    uint8_t cfig2;  //1/麦轮 2差速轮
    uint8_t cfig3;  //备用
    uint8_t cfig4;  //备用
    uint8_t cfig5;  //备用
    uint8_t cfig6;  //备用
    uint8_t cfig7;  //备用
}SYS_CONFIG_s;

//自定义显示
typedef struct
{
  std::string selftaskName;
  std::string info;
}selftask_info_t;

typedef enum {
    auto_charge = 0,//0
    motion_fb,        //1 //放筒的前后
    motion_co,      //2 //勾筒的前后
    motion_ud,      //3 //升降
    dev_allam,        //4 //自定义报警
    sensor_mask1,    //5 //信号开关
    sensor_mask2,    //6
    sensor_mask3,   //7
    sensor_mask4,   //8
    motion_guard,    //9 //挡板翻转
    bucket_num,        //10//筒数量查询
    cmd_default     //11 //非自定义状态
}SelfCmd_e;

typedef struct
{
    int mode;     //0=关机，1=节能模式，2=强劲模式，3=自定义模式
    int motor[4]; //电机开关状态
}usb_clean_data_mode_t;

//接收信息
extern arm_run_info_t arm_run_info_;
extern mech_para_t mechanical_param_;
//extern arm_operation_info_t arm_operation_info_;
extern mission_info_t mission_info_;
extern device_status_t device_status_;
extern screen_param_t agv_rec_id_;

//控制信号
extern mech_para_t mech_param_;
extern sensor_cmd_t sensor_cmd_;
extern paw_control_t paw_control_;
extern err_destroy_t err_clear_;
extern radar_amend_t radar_amend_;
extern agv_id_t agv_id_;
extern agv_positioning_t agv_loc_cmd_;
extern BatteryLimmit_s battary_thold_;
extern SelfCmd_e self_cmd_;

//
extern alarm_staus_t alarm_staus_;
extern Battery_s battery_status_;
extern usb_robot_status_run_t usb_robot_status_run_;
extern AgvSW_ts control_send_re_;
extern RTU307G_1 rtu3071;
extern RTU307G_2 rtu3072;
extern RTU317F_s rtu317;
extern RTU317T rtu317_Cotton;
extern RTU317F_CX_s rtu317_CX;
extern RTU317F0_s rtu3170;       //半自动IO
extern RTU317F1_s rtu317e;
extern RTU317E rtu317_fork;
extern RTU308K rtu308k;
extern RTU_317E_s rtu_317e_s;
extern RTU_317F_s rtu_317f_s;
extern RTU317F_Clean rtu317f_clean;
extern IO_s IO_stauts;
//extern ErrMask_s errmask;
//extern int MOTOR_NUM = 1;
extern ErrMask_Cotton_s errmask_Cotton_;
extern Motor_s Motor_re[MOTOR_NUM];
extern Motor_s Motor_re_Run;
extern Motor_s Motor_re_Ode;
extern Motor_s Motor_re_Hy;
extern robot_base_param_t robot_base_param_;
extern AgvSwState_s agv_sw_state_;
extern log_info_t log_info_;
extern Gyro_s gyro_s_;
extern selftask_info_t selftask_info_;
extern PC_s pc_info_;
extern SYS_CONFIG_s sys_config_send_;
extern SYS_CONFIG_s sys_config_receive_;
extern SafeRadar_s SafeRadar_L;
extern SafeRadar_s SafeRadar_R;
extern EcolineInfo_s ecolineInfo_[3];
extern usb_clean_data_mode_t usb_clean_data_mode_send_;
//
extern int from_pc_check_communication;
extern int agv_loc_status;
extern QString version_status;
extern std::string alarm_show_info_motro[5];

extern int from_pc_check_net_connection;
extern int from_arm_check_connection;
extern int from_arm_check_connection_error;
extern int from_arm_check_connection_first;
extern int from_arm_check_connection_last;
extern int from_pc_log_info_status;
extern int SafeRadarStatus_L;
extern int SafeRadarStatus_R;
extern int alarm_show_status[5];
extern int selftask_show_status;
extern int Arm_Open_status;
extern int Arm_Close_status;
extern int Remote_Control_status;
extern int SureCancelStatus;
extern int SafeRadarStatus_L;
extern int SafeRadarStatus_R;
extern int SafeRadarControl_L;
extern int SafeRadarControl_R;
extern uint8_t ControlStatus;
extern uint16_t AgvInit;
extern IO_MOTOR_t IO_motor_;
extern safety_radar_t safety_radar1;
extern safety_radar_t safety_radar2;
extern double_t positon_point_coordinate[11][3];
extern int motorNumMode;

#endif // UI_DATA_H
